﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Collections;

namespace TechControl.BD
{
    class Item_AtrinuidoDB: BaseDB
    {
        private static Item_AtrinuidoDB instance;

        private Item_AtrinuidoDB() { }

        public static Item_AtrinuidoDB getInstance()
        {
            if (instance == null)
            {
                instance = new Item_AtrinuidoDB();
            }
            return instance;
        }

        //inseri um novo item atribuído.
        public bool insertNewAtribuicao(Int64 codAtri, Int64 codFuncionario, string nome, Int64 codEquipamento, string serial, string imei, string marca,
                                        string modelo, string descEquip, string data, string rgfunc, string pat, string empresa)
        {
            bool result = false;
            try
            {
                this.open();
                SqlCommand command = new SqlCommand("insert into tb_item_atribuido values('" + codAtri + "', '" + codFuncionario + "', '" + nome +
                    "', '" + codEquipamento + "', '" + serial + "', '" + imei + "', '" + marca + "', '" + modelo + "', '" + descEquip + "', '" + data +
                    "', '" + rgfunc + "', '" + pat + "', '" + empresa + "');", this.conn);
                command.ExecuteNonQuery();
                result = true;
            }
            catch (Exception)
            {
                result = false;
            }
            finally { this.close(); }
            return result;
        }

        //obtem valor(ID_item_adquirido) do ultimo item inserido.
        public Int64 getLastIDInserido()
        {
            Int64 result = 0;
            try
            {
                this.open();
                SqlCommand command = new SqlCommand("select max(id_item_atribuido) from tb_item_atribuido;", this.conn);
                SqlDataReader rdr = command.ExecuteReader();
                while (rdr.Read())
                {
                    result = rdr.GetInt64(0);
                }
            }
            catch
            {
                result = 0;
            }
            finally
            {
                this.close();
            }
            return result;
        }

        //guarda os valores de um registro.
        private Item_Atribuido toItemAtribuido(SqlDataReader reader)
        {
            Item_Atribuido atribuido = new Item_Atribuido();
            atribuido.codItem = reader.GetInt64(0);
            atribuido.codFunc = reader.GetInt64(1);
            atribuido.nome = reader.GetString(2);
            atribuido.codEquip = reader.GetInt64(3);
            atribuido.serial = reader.GetString(4);
            atribuido.imei = reader.GetString(5);
            atribuido.marca = reader.GetString(6);
            atribuido.modelo = reader.GetString(7);
            atribuido.descModelo = reader.GetString(8);
            atribuido.data = reader.GetString(9);
            atribuido.rg = reader.GetString(10);
            atribuido.pat = reader.GetString(11);
            atribuido.empresa = reader.GetString(12);

            return atribuido;
        }

        //busca valores de um registro de acordo com o código informado(ID).
        public ArrayList selectByCod(Int64 cod)
        {
            ArrayList result = new ArrayList();
            try
            {
                this.open();
                SqlCommand command = new SqlCommand("Select * from tb_item_atribuido where id_item_atribuido = '" + cod + "'", this.conn);
                SqlDataReader rdr = command.ExecuteReader();
                while (rdr.Read())
                {
                    result.Add(this.toItemAtribuido(rdr));
                }
            }
            finally
            {
                this.close();
            }
            return result;
        }

        //remove o item da tabela, de acordo com o cod(ID) informado.
        public bool removeItem(Int64 cod)
        {
            bool result = false;
            try
            {
                this.open();
                SqlCommand command = new SqlCommand("delete from tb_item_atribuido where id_item_atribuido = '" + cod + "';", this.conn);
                command.ExecuteNonQuery();
                result = true;
            }
            catch (Exception)
            {
                result = false;
            }
            finally
            {
                this.close();
            }
            return result;
        }
    }
}
